package com.scs.application.modules.wm.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.scs.application.core.mapper.IBaseMapper;
import com.scs.application.modules.wm.dto.DistDTO;
import com.scs.application.modules.wm.entity.Dist;
import com.scs.application.modules.wm.entity.DistItem;
import com.scs.application.modules.wm.vo.DistVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 */
public interface DistMapper extends IBaseMapper<Dist> {
    /**
     * 根据库存ID获取配送记录
     * @param stockId
     * @return
     */
    List<Dist> getDistByStock(String stockId);

    /**
     * 根据库存ID获取配送记录
     * @param sn
     * @param deptId
     * @return
     */
    List<Dist> getDistBySn(String sn,String deptId);

    /**
     * 查询配送调度板展示的信息
     * @return
     */
    List<Dist> getDistSchedule();

    /**
     * 查询配送调度板展示的明细信息
     * @return
     */
    List<DistItem> getDistItemSchedule();

    /**
     *  PDA配送拣货列表
     * @return
     */
    List<Map> listForPDA(@Param(Constants.WRAPPER) QueryWrapper<DistVO> wrapper);



    /**
     * 更新配送明细的 拣货数量和金额
     * @return
     */
    void updatePickAmountQty(@Param("distId") String distId);


    /**
     * 重新计算配送单金额和拣货与需求数量
     * @param distId
     */
    void calculateDistInfo(@Param("distId") String distId,@Param("pickAndDemand") String pickAndDemand,@Param("amount") Double amount,@Param("distType") String distType);
    /**
     * 获取配送金额和拣货数量
     * @param distId
     */
    DistDTO getDistAmountAndPick(@Param("distId") String distId);
    /**
     * 获取配送单需求数量
     * @param distId
     */
    Double getDistDemand(@Param("distId") String distId);

    DistVO findByIdForPDA(@Param("id") String id);

    DistVO findBy(@Param("key") String key,@Param("value") String value);
}
